<?php

namespace app\process;

use Workerman\Crontab\Crontab;

class Task
{
    public function onWorkerStart()
    {
        // 标记在定时任务中
        define('IS_CRON', true);
        // 每秒钟执行一次
        new Crontab('*/1 * * * * *', function () {
            //echo date('Y-m-d H:i:s') . "\n";
            //echo php_sapi_name() . "\n";
        });

        if (getenv('APP_MODE') == 'production') {
            // 每分钟执行一次
            new Crontab('0 */1 * * * *', function () {
                $method = 'app\command\Minute::cron';
                // 执行 Cron 文件
                call_user_func($method);
                // Crontab
                call_user_func('app\command\Crontab::cron');
            });

            // 每小时执行一次
            new Crontab('0 */1 * * *', function () {
                $method = 'app\command\Hour::cron';
                // 执行 Cron 文件
                call_user_func($method);
            });

            // 每天2点执行一次
            new Crontab('0 2 * * *', function () {
                $method = 'app\command\Day::cron';
                // 执行 Cron 文件
                call_user_func($method);
            });

            // 每月01 02:00 执行一次
            new Crontab('0 2 1 * *', function () {
                $method = 'app\command\Month::cron';
                // 执行 Cron 文件
                call_user_func($method);
            });
        }
    }
}